package chapter07

import scala.collection.mutable.ArrayBuffer

object Demo02_TestArrayBuffer {
  def main(args: Array[String]): Unit = {
    //创建一个可变数组
    val arr1: ArrayBuffer[Int] = new ArrayBuffer[Int]()
    val arr2 = ArrayBuffer(1,2,3)

    println(arr1)
    println(arr2)

    //访问元素
    //println(arr1) // error  索引越界
    println(arr2(1))

    //修改
    arr2(1) = 99
    println(arr2(1))
    println(arr2.mkString(" "))

    //3、添加元素
    // :+ 主要是赋给不可变数组
    arr1 :+ 15
    println(arr1)  //ArrayBuffer()

    val newArr1 = arr1 :+ 15
    println(newArr1)  //ArrayBuffer(15)
    println(newArr1 == arr1)  // false

    // 可变数组用  +=  =+
    arr1 += 77
    println(arr1)

    arr1.append(777)
    arr1.prepend(888,2222)
    println(arr1)  //ArrayBuffer(888, 2222, 77, 777)
    //任意位置做添加
    arr1.insert(1,12,122,1111)  //表示在  1 索引位置进行添加   前面的那个数字表示的是所在的索引的位置
    println(arr1)  //ArrayBuffer(888, 12, 122, 1111, 2222, 77, 777)

    arr1.insertAll(2,newArr1)  //在任意位置 直接添加一整个数组进来
    println(arr1)  //ArrayBuffer(888, 12, 15, 122, 1111, 2222, 77, 777)

    arr1.appendAll(newArr1) //直接在后面添加一整个数组
    println(arr1) //ArrayBuffer(888, 12, 15, 122, 1111, 2222, 77, 777, 15)

    //删除
    arr1.remove(3)
    println(arr1)

    arr1.remove(0,3) //删除0位置的三个数字
    println(arr1)

    //删除特定名字的 先去找到这个  如果找到了就去删除  如果找不到就什么都不做  删除的过程中先做一个查询
    arr1 -= 15
    println(arr1)

    //可变数组和不可变数组的转换
    //可变数组转换为不可变数组
    val arr = ArrayBuffer(1,4,7,8)
    val newArry = arr.toArray
    println(newArry.mkString(" "))
    println(arr)
    //不可变数组转换为可变数组
    val buffer = newArry.toBuffer
    println(buffer)
    println(newArry)


  }
}
